home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / ACORNUSERS / EMULATOR / BABE / Documents / ProgRef < prev    next >
Text File  |  1998-01-18  |  30KB  |  547 lines

  1.          The Manchester University Small-Scale Experimental Machine
  2.  
  3.                         Programmer's Reference Manual
  4.  
  5.  
  6. 1 - Introduction
  7.  
  8. The Small-Scale Experimental Machine (SSEM) is the "official" name for the
  9. prototype Manchester Mark 1 as it existed when it successfully executed the
  10. world's first stored computer program on 21st June 1948. After that date,
  11. the machine underwent significant expansion in both capacity and
  12. functionality, including the invention of innovations such as the "B"-tube
  13. (what we today call instruction-modifier, or index register). The designers
  14. of the machine had a policy of making it work stage by stage, rather than
  15. building the whole thing before attempting to make it work. This policy is
  16. what enabled them to get the machine working at such an early date. The
  17. Programmer's Reference given here is for that original minimal machine.
  18. There was no formal document at the time - the whole description was, and
  19. only needed to be, in the designers' notebooks.
  20.  
  21. I am grateful to Keith Wood and Andy Molyneux for providing some of the
  22. information and wording used in this Programmer's Reference document.
  23.  
  24. Chris P Burton - The Computer Conservation Society    Issue 2 20th August 1997
  25. chris@envex.demon.co.uk
  26.  
  27.  
  28. 2 - Functional description
  29.  
  30. 2.1 The Store
  31.  
  32. The Store holds 32 lines, each of 32 binary digits. The lines are numbered
  33. 0-31, (from top to bottom when viewed on the monitor screen), and the digits
  34. are numbered 0-31 from left to right, with digit 0 being the least
  35. significant. Note this arrangement of binary significance, which was
  36. commonplace in the early development of serial computers as a consequence of
  37. the least significant digit appearing first (to make arithmetic carry
  38. circuits simpler) and the usage in engineering that time is often mapped on
  39. to a conventional X-axis.
  40.  
  41. The Store holds both instructions and data - what is often called "Von
  42. Neumann" architecture.
  43.  
  44. 2.2 The Accumulator
  45.  
  46. The Accumulator has a single line of 32 digits, and holds the result of
  47. arithmetic operations.
  48.  
  49. 2.3 The Control
  50.  
  51. The Control normally holds a single line of 32 digits, known as the "Control
  52. Instruction", or "CI". The CI is similar to what we would today call the PC
  53. or Program Counter, and it contains the address (i.e. the line number) in
  54. the Store of an instruction. The CI is always incremented just prior to
  55. fetching an instruction for execution, so it typically holds the address of
  56. the instruction executed last, rather than to be executed next.
  57. Consequently, the instruction in line 1 will be the first to be executed
  58. when a program starts.
  59.  
  60. During the execution of an instruction, the Control transiently holds a
  61. second line known as the "Present Instruction" or "PI", containing the
  62. actual instruction fetched and being executed. While the machine is not
  63. executing instructions, the PI line does not exist.
  64.  
  65. 2.4 Number format
  66.  
  67. Numbers are 32 bits long. The convention is that the most significant bit is
  68. a sign bit; negative numbers are held in complement form. There is no
  69. hardware to detect overflow or provide sign extension. Carries out of the
  70. top of a word are lost.
  71.  
  72. 2.5 Instruction format
  73.  
  74. An instruction has two components: a "line number" and a "function number".
  75. The line number indicates the line of the store on which the instruction
  76. should operate, and the function number indicates the operation to be
  77. performed on that line. The "CMP" and "STOP" instructions do not use the
  78. line number, and ignore anything in that line of the store..
  79.  
  80. One line in the store holds one instruction with the following layout:
  81.  
  82.  +-----------+--------------------+----------+------------+
  83.  | Line No.  | Not used           | Func. No.| Not used   |
  84.  |-----------+--------------------+----------|------------|
  85.  | 0 1 2 3 4 | 5 6 7 8 9 10 11 12 | 13 14 15 | 16 ... 31  |
  86.  +-----------+--------------------+----------+------------+
  87.  
  88. Only the eight defined bits are used in an instruction - the unused bits may
  89. be used for any purpose by the programmer and will be ignored by the
  90. instruction decoder.
  91.  
  92. 2.6 Instruction set
  93.  
  94. The function codes are tabulated below:
  95.  
  96. +---------+--------+-----------+---------------+------------------------------+
  97. | Func no | Binary | IEE paper | "Modern" name | Description                  |
  98. +---------+--------+-----------+---------------+------------------------------+
  99. | 0       | 000    | s, C      | JMP           | Copy content of Store line   |
  100. |         |        |           |               | to CI                        |
  101. +---------+--------+-----------+---------------+------------------------------+
  102. | 1       | 100    | c+s, C    | JRP           | Add content of Store line    |
  103. |         |        |           |               | to CI                        |
  104. +---------+--------+-----------+---------------+------------------------------+
  105. | 2       | 010    | -s, A     | LDN           | Copy content of Store line,  |
  106. |         |        |           |               | negated, to Accumulator      |
  107. +---------+--------+-----------+---------------+------------------------------+
  108. | 3       | 110    | a, S      | STO           | Copy content of Accumulator  |
  109. |         |        |           |               | to Store                     |
  110. +---------+--------+-----------+---------------+------------------------------+
  111. | 4       | 001    | a-s, A    | SUB           | Subtract content of Store    |
  112. |         |        |           |               | line from Accumulator        |
  113. +---------+--------+-----------+---------------+------------------------------+
  114. | 5       | 101    | -         | -             | Same as function number 4    |
  115. |         |        |           |               |                              |
  116. +---------+--------+-----------+---------------+------------------------------+
  117. | 6       | 011    | Test      | CMP           | Skip next instruction if     |
  118. |         |        |           |               | content of Accumulator < 0   |
  119. +---------+--------+-----------+---------------+------------------------------+
  120. | 7       | 111    | Stop      | STP           | Light "Stop" neon and halt   |
  121. |         |        |           |               | the machine                  |
  122. +---------+--------+-----------+---------------+------------------------------+
  123.  
  124. Remember that in this machine, binary codes have the least significant digit
  125. to the left. The "IEE paper" mnemonic is the way the instruction was named
  126. in 1948. The "Modern" name is the mnemonic used by the assembler included in
  127. this package.
  128.  
  129. Some further details about instruction operation are given in Appendix 1,
  130. and some programming hints in Appendix 2.
  131.  
  132. 2.7 Instruction timings
  133.  
  134. The SSEM is a serial computer, and the clock speed may be assumed to be
  135. 100kc/s, i.e. 10 microseconds per digit. The digit period at 21st June 1948
  136. was probably between 8.5 and 9.5 microseconds, but it was fixed at 10
  137. microseconds later.
  138.  
  139. An instruction always takes four word times to execute, and each word is 32
  140. bits plus 4 bits in the gap between words. The time for an instruction
  141. therefore is 1.44mS, or a computer speed of about 700 instructions per
  142. second.
  143.  
  144.  
  145. Appendix 1 - Programming details
  146.  
  147. A1.1 The "JMP" instruction
  148.  
  149. The line number addresses a line in the store containing a line number to be
  150. transferred to CI, i.e. it is an indirect jump in modern terminology.
  151. Remember that the whole line is transferred to CI, and that CI is
  152. incremented just prior to starting a new instruction. For example:
  153.  
  154. +-------------+---------------------+--------------+--------------------------+
  155. | Line number | Instruction or data | Binary       | Comment                  |
  156. +-------------+---------------------+--------------+--------------------------+
  157. | ...         |                     |              |                          |
  158. +-------------+---------------------+--------------+--------------------------+
  159. | 6           | SUB 19              | 11001..001.. | Accumulator op.,         |
  160. |             |                     |              | subtract contents of     |
  161. |             |                     |              | line 19                  |
  162. +-------------+---------------------+--------------+--------------------------+
  163. | 7           | CMP                 | 00000..011.. | Test sign of Accumulator |
  164. +-------------+---------------------+--------------+--------------------------+
  165. | 8           | JMP 10              | 01010..000.. | Jump back to instruction |
  166. |             |                     |              | in line 6 if positive    |
  167. +-------------+---------------------+--------------+--------------------------+
  168. | 9           | STOP                | 00000..111.. | Stop if negative         |
  169. +-------------+---------------------+--------------+--------------------------+
  170. | 10          | 5                   | 10100..000.. | CI for the JMP. One less |
  171. |             |                     |              | than the destination     |
  172. |             |                     |              | line                     |
  173. +-------------+---------------------+--------------+--------------------------+
  174. | ...         |                     |              |                          |
  175. +-------------+---------------------+--------------+--------------------------+
  176.  
  177. A1.2 The "JRP" instruction
  178.  
  179. The line number addresses a line in the Store containing a line number to be
  180. added to CI, i.e. an indirect relative jump. The whole contents of the
  181. addressed Store line is added to the CI and the result kept in CI. When the
  182. next instruction is started the CI is incremented, and the least significant
  183. 5 digits used as the address for fetching the instruction. [Note. This seems
  184. to be a "luxury" instruction to have in a minimal machine. The reason is
  185. that it is trivially easy to implement, and Tom Kilburn was looking towards
  186. the imminent increased storage capacity and use of relocatable code for use
  187. in subroutines.]
  188.  
  189. A1.3 Manipulation of CI
  190.  
  191. As mentioned earlier, the CI is incremented before an instruction is fetched
  192. and executed. During program execution, if a CMP instruction finds that the
  193. Accumulator is negative, then a Test Flip Flop is set. If the Test Flip Flop
  194. has been set, then CI will next be incremented by two instead of by one, and
  195. the Test Flip Flop will be reset. Note that only the five least significant
  196. bits of CI are used to address a line in the store, so it is possible for a
  197. CMP instruction in line 30 to be followed by an instruction either in line
  198. 31 (Accumulator positive) or in line 0 (Accumulator negative).
  199.  
  200. A1.4 Function bits 13-15 in CI
  201.  
  202. The SSEM was built with minimal control hardware. The fetch phase of
  203. instructions copies a word from the Store tube to the Control tube, putting
  204. it on the PI line (see section 2.3 above). This is almost the same operation
  205. as the execution phase of a JMP instruction, function 0, where a word is
  206. copied from the Store tube to the Control tube, putting it on the CI line.
  207. The same hardware is used for both sorts of operation, consequently, bits 13
  208. to 15 of the CI must always be zero so that the decoding hardware performs
  209. the correct routing during fetch phases.
  210.  
  211. Bits 13 to 15 in the CI could become non-zero in the following ways:
  212.  
  213. a.  Spurious bits in a JMP instruction operand line
  214.  
  215. b.  Spurious bits in a JRP instruction operand line, or so created by
  216.     the addition of the line contents to CI,
  217.  
  218. c.  Allowing the CI to increment such that bits carry into bit 13. This 
  219.     could happen, for example, if a valid instruction in line 31 was followed
  220.     by a valid instruction in line 0. In that case there will be a carry into
  221.     bit 5, and if the program continues to cycle from line 31 to line 0 then
  222.     eventually there will be a carry into bit 13.
  223.  
  224. The effect of non-zero bits in the function part of CI will normally be to
  225. cause the computer to "hang", because the decoding of the bits would not set
  226. up a route for the instruction from the Store into the PI.  The exception is
  227. if the bits are 100 (function number 1), in which case the instruction from
  228. the Store is added to the PI left over from the previous instruction. No use
  229. is envisaged for this.
  230.  
  231.  
  232. Appendix 2 - Some programming hints
  233.  
  234. It is quite an art to create interesting programs with such a small storage
  235. capacity and tiny instruction set. However, the example programs HCF1,
  236. LONGDIV1 and PROG1 written by the pioneers show that much could be done with
  237. so little. Those programs suggest some useful techniques, and further hints
  238. are in the following sections. In 1948 nobody had explained that it was
  239. sinful to use instructions as data and vice versa.
  240.  
  241. A2.1 Addition in the Accumulator using the SUB instruction
  242.  
  243. The "ADD" instruction was not provided in the original machine until August
  244. 1948. The following fragment would be needed to add two numbers and place
  245. the result back in the Store.
  246.  
  247. +-------------+---------------------+--------------+--------------------------+
  248. | Line number | Instruction or data | Binary       | Comment                  |
  249. +-------------+---------------------+--------------+--------------------------+
  250. | ...         |                     |              |                          |
  251. +-------------+---------------------+--------------+--------------------------+
  252. | 3           | LDN 28              | 00111..010.. | -x to A                  |
  253. +-------------+---------------------+--------------+--------------------------+
  254. | 4           | SUB 29              | 10111..001.. | -x - y to A              |
  255. |             |                     |              | {=  -(x + y)  }          |
  256. +-------------+---------------------+--------------+--------------------------+
  257. | 5           | STO 30              | 01111..110.. | -(x + y) to Result       |
  258. +-------------+---------------------+--------------+--------------------------+
  259. | 6           | LDN 30              | 01111..010.. | -(-(x + y)) to A         |
  260. |             |                     |              | {=  (x + y )  }          |
  261. +-------------+---------------------+--------------+--------------------------+
  262. | 7           | STO 30              | 01111..110.. | x + y to Result          |
  263. +-------------+---------------------+--------------+--------------------------+
  264. | ...         |                     |              |                          |
  265. +-------------+---------------------+--------------+--------------------------+
  266. | 28          | x                   |              | First number, x          |
  267. +-------------+---------------------+--------------+--------------------------+
  268. | 29          | y                   |              | Second number, y         |
  269. +-------------+---------------------+--------------+--------------------------+
  270. | 30          | x + y               |              | Result, x + y            |
  271. +-------------+---------------------+--------------+--------------------------+
  272.  
  273. A2.2 Small constants
  274.  
  275. The indirect jump location used in JMP and JRP instructions can sometimes be
  276. used as a small constant. For example:
  277.  
  278. +-------------+---------------------+--------------+--------------------------+
  279. | Line number | Instruction or data | Binary       | Comment                  |
  280. +-------------+---------------------+--------------+--------------------------+
  281. | 1           | LDN 30              | 01111..010.. | First instruction in     |
  282. |             |                     |              | program                  |
  283. +-------------+---------------------+--------------+--------------------------+
  284. | 2           | STO 30              | 01111..110.. | Top of loop              |
  285. +-------------+---------------------+--------------+--------------------------+
  286. | ...         |                     |              |                          |
  287. +-------------+---------------------+--------------+--------------------------+
  288. | 9           | SUB 20              | 00101..001.. | Decrement Accumulator    |
  289. +-------------+---------------------+--------------+--------------------------+
  290. | 10          | CMP                 | 00000..011.. | Test Accumulator         |
  291. +-------------+---------------------+--------------+--------------------------+
  292. | 11          | JMP 20              | 00101..000.. | Loop back to line 2 if   |
  293. |             |                     |              | positive                 |
  294. +-------------+---------------------+--------------+--------------------------+
  295. | ...         |                     |              | else continue            |
  296. +-------------+---------------------+--------------+--------------------------+
  297. | 20          | 1                   | 10000..000   | Constant with different  |
  298. |             |                     |              | uses                     |
  299. +-------------+---------------------+--------------+--------------------------+
  300. | ...         |                     |              |                          |
  301. +-------------+---------------------+--------------+--------------------------+
  302.  
  303. A2.3 Indexing, or Instruction Modification
  304.  
  305. A common operation is to add a small integer to a word. An example would be
  306. where the line number part of an instruction is to be indexed. The small
  307. integer should be stored as its complement as in the following fragment.
  308.  
  309. +-------------+---------------------+--------------+--------------------------+
  310. | Line number | Instruction or data | Binary       | Comment                  |
  311. +-------------+---------------------+--------------+--------------------------+
  312. | ...         |                     |              |                          |
  313. +-------------+---------------------+--------------+--------------------------+
  314. | 6           | SUB 19              | 11001..001.. | Subtraction operation to |
  315. |             |                     |              | be indexed through lines |
  316. |             |                     |              | 19, 20, 21 etc.          |
  317. +-------------+---------------------+--------------+--------------------------+
  318. | ...         |                     |              |                          |
  319. +-------------+---------------------+--------------+--------------------------+
  320. | 12          | LDN 6               | 01100..010.. | Complement of            |
  321. |             |                     |              | instruction to A         |
  322. +-------------+---------------------+--------------+--------------------------+
  323. | 13          | STO 0               | 00000..110.. | Store in temporary space |
  324. +-------------+---------------------+--------------+--------------------------+
  325. | 14          | LDN 0               | 00000..010.. | Instruction to A         |
  326. +-------------+---------------------+--------------+--------------------------+
  327. | 15          | SUB 18              | 01001..001.. | Modify                   |
  328. +-------------+---------------------+--------------+--------------------------+
  329. | 16          | STO 6               | 01100..110.. | Instruction indexed      |
  330. +-------------+---------------------+--------------+--------------------------+
  331. | 17          | JMP ..              | .......000.. | Next...                  |
  332. +-------------+---------------------+--------------+--------------------------+
  333. | 18          | -1                  | 111111111... | -1                       |
  334. +-------------+---------------------+--------------+--------------------------+
  335. | ...         |                     |              |                          |
  336. +-------------+---------------------+--------------+--------------------------+
  337.  
  338. A2.4 Counting
  339.  
  340. Similarly, counting is a frequent program requirement. Space can be
  341. conserved by keeping the counter in the upper part of an instruction, as in
  342. the following code.
  343.  
  344. +-------------+------------+-----------------+--------------------------------+
  345. | Line number | Contents   | Binary          | Comment                        |
  346. +-------------+------------+-----------------+--------------------------------+
  347. | ...         |            |                 |                                |
  348. +-------------+------------+-----------------+--------------------------------+
  349. | 6           | LDN 21     | 10101..010..000 | Instruction: counter in top 3  |
  350. |             |            |                 | bits                           |
  351. +-------------+------------+-----------------+--------------------------------+
  352. | ...         |            |                 |                                |
  353. +-------------+------------+-----------------+--------------------------------+
  354. | 12          | LDN 6      | 01100..010..... | Complement of instruction and  |
  355. |             |            |                 | counter to A                   |
  356. +-------------+------------+-----------------+--------------------------------+
  357. | 13          | STO 0      | 00000..110..... | Store in temporary space       |
  358. +-------------+------------+-----------------+--------------------------------+
  359. | 14          | LDN 0      | 00000..010..... | Instruction and counter to A   |
  360. +-------------+------------+-----------------+--------------------------------+
  361. | 15          | SUB 20     | 00101..001..... | Increment counter              |
  362. +-------------+------------+-----------------+--------------------------------+
  363. | 16          | STO 6      | 01100..110..... | Counter incremented            |
  364. +-------------+------------+-----------------+--------------------------------+
  365. | 17          | CMP        | 00000..011..... | End of count?                  |
  366. +-------------+------------+-----------------+--------------------------------+
  367. | 18          | JMP ..     | .......000      | No                             |
  368. +-------------+------------+-----------------+--------------------------------+
  369. | 19          | JMP ..     | .......000      | Yes                            |
  370. +-------------+------------+-----------------+--------------------------------+
  371. | 20          |            | 00000..00000111 | -1 in top 3 bits of word       |
  372. +-------------+------------+-----------------+--------------------------------+
  373.  
  374.  
  375. Appendix 3 - Physical Description
  376.  
  377. A complete contemporary description of the machine is given in a paper
  378. published in the Proceedings of the Institution of Electrical Engineers. The
  379. paper was submitted in March 1950, and published as:
  380.  
  381. Williams F.C., Kilburn T. and Tootill G.C., "Universal High-Speed Digital
  382. Computers: A Small-Scale Experimental Machine", Proc IEE, Vol. 98, Part II,
  383. No 61, February 1951, pp. 13-28.
  384.  
  385. The paper will be available for downloading from the Computer Conservation
  386. Society archive site at <ftp://ftp.cs.man.ac.uk/CCS>.
  387.  
  388. A thorough, detailed understanding of that paper should be enough to enable
  389. anyone to write a program for the SSEM. However, there are subtleties of
  390. behaviour which are not made explicit. Furthermore, the exact way that the
  391. "input and output" controls appear to the user is not obvious. This appendix
  392. addresses those details where they have not already been explained earlier
  393. in this Programmer's Reference. There should be no contradictions between
  394. the IEE paper and this document, except where specifically mentioned herein.
  395.  
  396. This document mostly uses the terminology used in 1948, though some modern
  397. terminology is used where essential. For example it refers to information
  398. being held in a "line" where today it would probably be more usual to say
  399. "location" or "word". The original word "store" is used rather than the
  400. modern anthropomorphic word "memory".
  401.  
  402. A3.1 The Monitor
  403.  
  404. There is a fourth cathode ray tube not used for storage but as a Monitor
  405. tube. Three interlocking push buttons allow the Monitor to be connected to
  406. any one of the three storage tubes. The Monitor always displays 32 lines of
  407. 32 digits. In the case of the Store, this is a natural display of the whole
  408. contents of the Store. In the case of the Accumulator, which only contains
  409. one line of data, that line is repeated on all 32 lines of the monitor. In
  410. the case of the Control: while the machine is running the CI and PI appear
  411. on alternate lines of the Monitor, but if the machine is not running, then
  412. only the CI appears on all 32 lines.
  413.  
  414. The digits are represented on the monitor as a small dot for a zero, and a
  415. horizontal dash for a one. Any line of the Store is addressable for some
  416. operation and is known as the Action Line. On the monitor, the Action Line
  417. appears brightened. Manual control of the Action Line is described later in
  418. paragraph A.3.3.2.1.
  419.  
  420. A3.2 The "Stop" indicator
  421.  
  422. A neon indicator lamp is situated near to the Monitor. It is illuminated
  423. when a Stop instruction has been decoded (see later).
  424.  
  425. A3.3 Control Switches
  426.  
  427. There are four panels containing switches. Their correct operation by the
  428. user is essential if the computer is to operate according to this
  429. Programmer's Reference. The effect of some incorrect operations, but not
  430. all, will be explained.
  431.  
  432. A3.3.1 The Typewriter
  433.  
  434. The panel contains 40 push-buttons arranged as eight columns of five
  435. buttons. The buttons are numbered 0 to 31 starting at top left and running
  436. down a column and then down succeeding columns from left to right. Only the
  437. first 32 buttons are connected.
  438.  
  439. The Typewriter is normally used while the machine is at Stop, i.e. not
  440. executing instructions. If the Write/Erase Switch (see below) is at "Write",
  441. then pushing a typewriter button causes a "one" to be written into the
  442. corresponding digit position of the Action Line. If the Write/Erase Switch
  443. is at "Erase", then a zero is written into the position. If more than one
  444. button is pressed simultaneously, then the result is usually but not always
  445. ineffective.
  446.  
  447. If the machine is running, then operation of the Typewriter will affect all
  448. the Action Lines encountered while the button is pressed.
  449.  
  450. A3.3.2 The Staticisor ("Stat") Switch
  451.  
  452. There is a toggle switch labeled "Auto/Man". The switch determines the
  453. operation of five "Line" or "L-Stat" toggle switches, and three "Function"
  454. or "F-Stat" toggle switches. The machine behaves according to the setting of
  455. these switches as follows:
  456.  
  457. A3.3.2.1 Switch at either "Man" or "Auto", computer not running
  458.  
  459. The "Line" switches select which line in the store is to be the Action Line.
  460. Any line- oriented operation e.g. Typewriter and KLC (see later), affects
  461. the Action Line. A "Line" switch is down for on, up for off. The "Function"
  462. switches do nothing.
  463.  
  464. A3.3.2.2 Switch at "Manual", computer  running
  465.  
  466. The instruction represented by the setting of the "Line" and "Function"
  467. switches is executed repeatedly. "Single Step" mode (see later) is a special
  468. case of computer running where just one instruction is executed per single
  469. step.
  470.  
  471. A3.3.2.3 Switch at "Auto", computer running
  472.  
  473. Instructions are fetched from the Store and executed. The instructions
  474. fetched, as well as the CI itself, pass through the "Line" and "Function"
  475. switches on the way to the staticisor; accordingly they must all be set to
  476. "on". If any switch is "off", then the corresponding digit in the
  477. instruction or coming from CI is forced to zero, with the predictable
  478. effect.
  479.  
  480. If the Typewriter is operated, in conjunction with the Write/Erase Switch,
  481. then all lines being accessed by the running program will be appropriately
  482. affected. This may corrupt the program, for example if the function or line
  483. fields of instructions are changed.
  484.  
  485. A3.3.3 Write/Erase Switch
  486.  
  487. As mentioned in the description of the Typewriter, this switch determines
  488. whether a "one" or a "zero" is "typed" into the Store in the selected line.
  489. It must be in the "Write" position while the computer is running. Should it
  490. be left in the "Erase" position, then all action lines would be corrupted.
  491.  
  492. A3.3.4 Storage clearing keys
  493.  
  494. There is a set of key switches each of which clears the appropriate storage
  495. locations to zeroes. Their use while the computer is running is
  496. unpredictable. They are non-locking, i.e. return to the neutral position
  497. when released.
  498.  
  499. A3.3.4.1 Key Line Clear (KLC)
  500.  
  501. Clears the Action Line.  If this key is operated while a program is running,
  502. then all lines being accessed by the program will be cleared, thereby
  503. corrupting the program.
  504.  
  505. A3.3.4.2 Key Store Clear (KSC)
  506.  
  507. Clears the whole Store. Obliterates any existing program, whether the
  508. computer is running or not.
  509.  
  510. A3.3.4.3 Key Control Clear (KCC)
  511.  
  512. Despite its name this key clears both the Control tube and the Accumulator
  513. tube.  If the key is operated while a program is running, then the result is
  514. not predictable, and in some circumstances the program will be corrupted.
  515.  
  516. A3.3.4.4 KAC, KBC, KEC, KMC
  517.  
  518. Although physically present, these switches are not connected.
  519.  
  520. A3.3.5 Monitor selector
  521.  
  522. These interlocking push buttons enable the Monitor tube to be connected to
  523. the output of one of the three Storage tubes (see A3.1 above)
  524.  
  525. A3.3.6 CS switch
  526.  
  527. The Completion Signal (or Prepulse) toggle switch, CS, has an up position
  528. marked "Stop" and a down position marked "Run".  ( The term "Completion
  529. Signal" is a hangover from the early days when the designers thought of the
  530. pulse which initiates a new instruction as actually completing the previous
  531. instruction. In June 1948 they were in transition to calling it the
  532. "Prepulse").
  533.  
  534. In the "Stop" position, prepulses are inhibited, so the machine does not run
  535. and execute instructions automatically. In the "Run" position, prepulses are
  536. generated automatically at the end of each instruction, so causing the next
  537. instruction to be fetched and executed. Prepulses are inhibited if a Stop
  538. instruction has been encountered and the "Stop" neon is illuminated.
  539.  
  540. A3.3.7 Key Completion, (KC) also known as Key Single Prepulse (KSP)
  541.  
  542. This is effectively the non-locking Single Step key. It is effective when
  543. the CS switch is at Stop, and causes one prepulse to be generated. Thus one
  544. instruction will be fetched and executed. If such instruction is not a Stop
  545. instruction, then incidentally the "Stop" neon, if illuminated, will be
  546. extinguished.
  547.